题目解析:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例
示例 1:
示例 2:
解题思路
利用findIndex函数遍历数组。
解答
1 2 3 4 5 6
| var findFuc = function(el, index, arr) { return el >= this } var searchInsert = function(nums, target) { return nums.findIndex(findFuc, target) == -1 ? nums.length : nums.findIndex(findFuc, target) };
|
解题思路二
利用二分法遍历数组。
解答二
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| var searchInsert = function(nums, target) { if (nums[0] >= target) { return 0; } if (nums[nums.length - 1] < target) { return nums.length; } let left = 0, right = nums.length - 1, mid = parseInt((nums.length - 1)/2); while(left < (right-1)) { if (nums[mid] > target) { right = mid; } else if (nums[mid] < target) { left = mid; } else { return mid; } mid = parseInt((left + right) / 2); } return right; };
|